//zoomkat 4-04-12
//simple client test
//for use with IDE 1.0
//open serial monitor and send an e to test
//for use with W5100 based ethernet shields
//note that the below bug fix may be required
// http://code.google.com/p/arduino/issues/detail?id=605 
//the arduino lan IP address { 192, 168, 1, 102 } may need 
//to be modified modified to work with your router.

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 
  192, 168, 1, 3 }; // ip in lan assigned to arduino
//byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
//byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
byte myserver[] = { 
  54,84,116,78 }; // zoomkat web page server IP address
EthernetClient client;
String readString = String(200);
//////////////////////

void setup(){

  Ethernet.begin(mac,ip);
  //Ethernet.begin(mac, ip, gateway, gateway, subnet);
  Serial.begin(9600); 
  Serial.println("Better client test 4/04/12"); // so I can keep track of what is loaded
  Serial.println("Send an e in serial monitor to test"); // what to do to test
}

void loop(){
  // check for serial input
  sendGET();
  delayMicroseconds(250); 
  /*  if (Serial.available() > 0) //if something in serial buffer
   {
   byte inChar; // sets inChar as a byte
   inChar = Serial.read(); //gets byte from buffer
   Serial.println(inChar);
   if(inChar == 'e') // checks to see byte is an e
   {
   sendGET(); // call sendGET function below when byte is an e
   }
   }  
   */
} 

//////////////////////////

void sendGET() //client function to send/receive GET request data.
{
  if (client.connect(myserver, 8126)) {  //starts client connection, checks for connection
    Serial.println("connected");
    client.println("GET /index.html HTTP/1.0"); //download text
    client.println(); //end of get request
  } 
  else {
    Serial.println("connection failed"); //error message if no client connect
    Serial.println();
  }

  while(client.connected() && !client.available()) delayMicroseconds(150); //delay(1); //waits for data
  while (client.connected() || client.available()) { //connected or data available
    char c = client.read(); //gets byte from ethernet buffer
    //Serial.print(c); //prints byte to serial monitor 
    if (readString.length() < 200) {
      readString.concat(c);         
    } 
    else {
      break;        
    }
  }

  Serial.print(readString);
  Serial.println();
  Serial.println("disconnecting.");
  Serial.println("==================");
  Serial.println();
  client.stop(); //stop client

}


